users_data = [
    {'user':'a123','pw':'123','money':8888},
    {'user':'b123','pw':'123','money':0},
    {'user':'c123','pw':'123','money':18},
    {'user':'d123','pw':'123','money':1328}
]


#登入界面
def welcome_UI():
    print('='*20,'ATM操作界面','='*20)
    print('|{:11}{:12}|{:11}{:12}|'.format('','1.登入','','2.注册'))
    print('|{:21}{:27}|'.format('','3.退出'))
    print('=' * 20, 'ATM操作界面', '=' * 20)
# 用户操作界面
def user_UI():
    print('='*20,'ATM操作界面','='*20)
    print('|{:<11}{:<11}|{:<11}{:<12}|'.format('', '1.余额查询', '', '2.存储'))
    print('|{:<11}{:<12}|{:<11}{:<12}|'.format('', '3.取现', '', '4.登出'))
    print('=' * 20, 'ATM操作界面', '=' * 20)
#登入
def login():

    # 定义状态值 1 登入成功 0 登入失败
    stat = 0
    account={}
    user_name = input('请输入用户名或者输入#号键返回登入界面：')
    if input=='#':
        return stat,account
    else:
        while True:
            for users in users_data:
                if users['user']==user_name:
                    password=input('请输入用户密码或者输入#号键返回登入界面：')
                    if password == '#':
                        return stat,users
                    else:
                        while True:
                            password=int(password)
                            if int(users['pw'])==password:
                                stat = 1
                                return stat,users
                            else:
                                password=input('密码错误请重新输入或者输入#号键返回登入界面： ')
                            if password=='#':
                                return stat,users
            user_name = input('用户名输入错误请重新输入或者输入#号键返回登入界面：')
            if user_name=='#':
                return stat,account

# 注册
def register():
    username = input('请输入注册的用户名：')
    password = input('请输入对应用户名的密码：')
    account={}
    account['user']=username
    account['pw']=password
    account['money']=0
    users_data.append(account)

#登出
def logout():
    pass

#查询余额
def balance(account):
    print('='*20,'您的余额为：',account['money'],'元','='*20)
    return account
#取钱
def withdraw(account):
    while True:
        out = input('请输入您取现的金额：')
        out = int(out)
        if out <= account['money']:
            account['money']=account['money']-out
            balance(account)
            break
        else:
            print('='*20,'余额不足，请重新输入','='*20)
    return account
# 存钱
def deposite(account):
    dep=input('请输入您存储的金额：')
    dep=int(dep)
    account['money']=account['money']+dep
    balance(account)
    return account

# 更新数据库
def users_update(account):
    for i,users in enumerate(users_data):
        if users['user']==account['user']:
            users_data[i]['money']=account['money']
# 主程序
while True:
    #登录界面
    welcome_UI()
    key = input('请输入对应的选择：')
    if key == '1':
        stat,account=login()
        if stat==1:
            #用户界面
            user_UI()
            while True:
                key = input('请输入对应的选择：')
                if key == '1':
                    account=balance(account)
                elif key == '2':
                    account=deposite(account)
                elif key == '3':
                    account=withdraw(account)
                elif key == '4':
                    logout()
                    break
                else:
                    print('=' * 20, '非法输入', '=' * 20)
                # 更新数据库
                users_update(account)
                user_UI()
    elif key == '2':
        register()
        print('='*20,'注册完成，返回登入界面','='*20)
    elif key == '3':
        break
    else:
        print('='*20,'非法输入','='*20)


